home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.xml.internal;
-
- class CMStateSet {
- int fBitCount;
- int fByteCount;
- int fBits1;
- int fBits2;
- byte[] fByteArray;
-
- CMStateSet(int var1) throws CMException {
- this.fBitCount = var1;
- if (this.fBitCount < 0) {
- throw new CMException(156);
- } else {
- if (this.fBitCount > 64) {
- this.fByteCount = this.fBitCount / 8;
- if (this.fBitCount % 8 != 0) {
- ++this.fByteCount;
- }
-
- this.fByteArray = new byte[this.fByteCount];
- }
-
- this.zeroBits();
- }
- }
-
- public String toString() {
- StringBuffer var1 = new StringBuffer();
-
- try {
- var1.append("{");
-
- for(int var2 = 0; var2 < this.fBitCount; ++var2) {
- if (this.getBit(var2)) {
- var1.append(" " + var2);
- }
- }
-
- var1.append(" }");
- } catch (CMException var3) {
- }
-
- return var1.toString();
- }
-
- final void intersection(CMStateSet var1) {
- if (this.fBitCount < 65) {
- this.fBits1 &= var1.fBits1;
- this.fBits2 &= var1.fBits2;
- } else {
- for(int var2 = this.fByteCount - 1; var2 >= 0; --var2) {
- byte[] var10000 = this.fByteArray;
- var10000[var2] &= var1.fByteArray[var2];
- }
-
- }
- }
-
- final boolean getBit(int var1) throws CMException {
- if (var1 >= this.fBitCount) {
- throw new CMException(156);
- } else if (this.fBitCount < 65) {
- int var4 = 1 << var1 % 32;
- if (var1 < 32) {
- return (this.fBits1 & var4) != 0;
- } else {
- return (this.fBits2 & var4) != 0;
- }
- } else {
- byte var2 = (byte)(1 << var1 % 8);
- int var3 = var1 >> 3;
- return (this.fByteArray[var3] & var2) != 0;
- }
- }
-
- final boolean isEmpty() {
- if (this.fBitCount < 65) {
- return this.fBits1 == 0 && this.fBits2 == 0;
- } else {
- for(int var1 = this.fByteCount - 1; var1 >= 0; --var1) {
- if (this.fByteArray[var1] != 0) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- final boolean isSameSet(CMStateSet var1) {
- if (this.fBitCount != var1.fBitCount) {
- return false;
- } else if (this.fBitCount < 65) {
- return this.fBits1 == var1.fBits1 && this.fBits2 == var1.fBits2;
- } else {
- for(int var2 = this.fByteCount - 1; var2 >= 0; --var2) {
- if (this.fByteArray[var2] != var1.fByteArray[var2]) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- final void union(CMStateSet var1) {
- if (this.fBitCount < 65) {
- this.fBits1 |= var1.fBits1;
- this.fBits2 |= var1.fBits2;
- } else {
- for(int var2 = this.fByteCount - 1; var2 >= 0; --var2) {
- byte[] var10000 = this.fByteArray;
- var10000[var2] |= var1.fByteArray[var2];
- }
-
- }
- }
-
- final void setBit(int var1) throws CMException {
- if (var1 >= this.fBitCount) {
- throw new CMException(156);
- } else if (this.fBitCount < 65) {
- int var4 = 1 << var1 % 32;
- if (var1 < 32) {
- this.fBits1 &= ~var4;
- this.fBits1 |= var4;
- } else {
- this.fBits2 &= ~var4;
- this.fBits2 |= var4;
- }
- } else {
- byte var2 = (byte)(1 << var1 % 8);
- int var3 = var1 >> 3;
- byte[] var10000 = this.fByteArray;
- var10000[var3] = (byte)(var10000[var3] & ~var2);
- var10000 = this.fByteArray;
- var10000[var3] |= var2;
- }
- }
-
- final void setTo(CMStateSet var1) throws CMException {
- if (this.fBitCount != var1.fBitCount) {
- throw new CMException(156);
- } else if (this.fBitCount < 65) {
- this.fBits1 = var1.fBits1;
- this.fBits2 = var1.fBits2;
- } else {
- for(int var2 = this.fByteCount - 1; var2 >= 0; --var2) {
- this.fByteArray[var2] = var1.fByteArray[var2];
- }
-
- }
- }
-
- final void zeroBits() {
- if (this.fBitCount < 65) {
- this.fBits1 = 0;
- this.fBits2 = 0;
- } else {
- for(int var1 = this.fByteCount - 1; var1 >= 0; --var1) {
- this.fByteArray[var1] = 0;
- }
-
- }
- }
- }
-